#include "stdio.h"
#include "stdlib.h"

typedef struct BiTNode{
    char data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int count=0;
char c[] = { 'D', 'E', 'H', '#', '#', 'F', 'J', '#', '#', 'G', '#', 'C', 'K', '#', '#', '#', 'A', '#', 'B', '#', '#' };
void CreateTree(BiTNode* &T){
    char ch=c[count++];
    if(ch=='#'){
        T=NULL;
    } else{
        T=(BiTNode*)malloc(sizeof (BiTNode));
        T->data=ch;
        CreateTree(T->lchild);
        CreateTree(T->rchild); 
    }
}

void PreOrder(BiTree T){
    if(T!=NULL){
        printf(" %c",T->data);
        PreOrder(T->lchild);
        PreOrder(T->rchild);
    }
}

void InOrder(BiTree T){
    if(T!=NULL){
        InOrder(T->lchild);
        printf(" %c",T->data);
        InOrder(T->rchild);
    }
}

void PostOrder(BiTree T){
    if(T!=NULL){
        PostOrder(T->lchild);
        PostOrder(T->rchild);
        printf(" %c",T->data);
    }
}


int main(){
    BiTNode* T;
    CreateTree(T);
//    printf("PreOrder:");
//    PreOrder(T);
//    printf("\n");
//    printf("InOrder:");
//    InOrder(T);
//    printf("\n");
//    printf("PostOrder:");
//    PostOrder(T);
//    printf("\n");
    return 0;
}

